home *** CD-ROM | disk | FTP | other *** search
/ PC PowerPlay 22 / PCPP #22.iso / Quake2 / q2source_12_11 / utils3 / common / polylib.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-11-18  |  1.1 KB  |  35 lines

  1.  
  2. typedef struct
  3. {
  4.     int        numpoints;
  5.     vec3_t    p[4];        // variable sized
  6. } winding_t;
  7.  
  8. #define    MAX_POINTS_ON_WINDING    64
  9.  
  10. // you can define on_epsilon in the makefile as tighter
  11. #ifndef    ON_EPSILON
  12. #define    ON_EPSILON    0.1
  13. #endif
  14.  
  15. winding_t    *AllocWinding (int points);
  16. vec_t    WindingArea (winding_t *w);
  17. void    WindingCenter (winding_t *w, vec3_t center);
  18. void    ClipWindingEpsilon (winding_t *in, vec3_t normal, vec_t dist, 
  19.                 vec_t epsilon, winding_t **front, winding_t **back);
  20. winding_t    *ChopWinding (winding_t *in, vec3_t normal, vec_t dist);
  21. winding_t    *CopyWinding (winding_t *w);
  22. winding_t    *ReverseWinding (winding_t *w);
  23. winding_t    *BaseWindingForPlane (vec3_t normal, vec_t dist);
  24. void    CheckWinding (winding_t *w);
  25. void    WindingPlane (winding_t *w, vec3_t normal, vec_t *dist);
  26. void    RemoveColinearPoints (winding_t *w);
  27. int        WindingOnPlaneSide (winding_t *w, vec3_t normal, vec_t dist);
  28. void    FreeWinding (winding_t *w);
  29. void    WindingBounds (winding_t *w, vec3_t mins, vec3_t maxs);
  30.  
  31. void    ChopWindingInPlace (winding_t **w, vec3_t normal, vec_t dist, vec_t epsilon);
  32. // frees the original if clipped
  33.  
  34. void pw(winding_t *w);
  35.